#[cfg(any(feature = "v2019_3", feature = "dox"))]
use glib::GString;
use ostree_sys;
+use ostree_sys::OstreeKernelArgs;
use std::fmt;
use std::ptr;
use Error;
pub struct KernelArgs(Boxed<ostree_sys::OstreeKernelArgs>);
match fn {
- copy => |ptr| ostree_sys::ostree_kernel_args_copy(mut_override(ptr)),
+ copy => |_ptr| unimplemented!(),
free => |ptr| ostree_sys::ostree_kernel_args_free(ptr),
}
}
}
}
- #[cfg(any(feature = "v2019_3", feature = "dox"))]
+ /*#[cfg(any(feature = "v2019_3", feature = "dox"))]
pub fn append_argv(&mut self, argv: &str) {
unsafe {
ostree_sys::ostree_kernel_args_append_argv(
prefixes.to_glib_none().0,
);
}
- }
+ }*/
#[cfg(any(feature = "v2019_3", feature = "dox"))]
pub fn append_proc_cmdline<P: IsA<gio::Cancellable>>(
}
#[cfg(any(feature = "v2019_3", feature = "dox"))]
- pub fn get_last_value(&mut self, key: &str) -> Option<GString> {
+ pub fn get_last_value(&self, key: &str) -> Option<GString> {
unsafe {
from_glib_none(ostree_sys::ostree_kernel_args_get_last_value(
- self.to_glib_none_mut().0,
+ self.to_glib_none().0 as *mut OstreeKernelArgs,
key.to_glib_none().0,
))
}
}
}
- #[cfg(any(feature = "v2019_3", feature = "dox"))]
+ /*#[cfg(any(feature = "v2019_3", feature = "dox"))]
pub fn replace_argv(&mut self, argv: &str) {
unsafe {
ostree_sys::ostree_kernel_args_replace_argv(
argv.to_glib_none().0,
);
}
- }
+ }*/
#[cfg(any(feature = "v2019_3", feature = "dox"))]
pub fn replace_take(&mut self, arg: &str) {
}
#[cfg(any(feature = "v2019_3", feature = "dox"))]
- fn to_string(&mut self) -> GString {
+ fn to_gstring(&self) -> GString {
unsafe {
from_glib_full(ostree_sys::ostree_kernel_args_to_string(
- self.to_glib_none_mut().0,
+ self.to_glib_none().0 as *mut OstreeKernelArgs,
))
}
}
#[cfg(any(feature = "v2019_3", feature = "dox"))]
- pub fn to_strv(&mut self) -> Vec<GString> {
+ pub fn to_strv(&self) -> Vec<GString> {
unsafe {
FromGlibPtrContainer::from_glib_full(ostree_sys::ostree_kernel_args_to_strv(
- self.to_glib_none_mut().0,
+ self.to_glib_none().0 as *mut OstreeKernelArgs,
))
}
}
- //#[cfg(any(feature = "v2019_3", feature = "dox"))]
- //pub fn cleanup(loc: /*Unimplemented*/Option<Fundamental: Pointer>) {
- // unsafe { TODO: call ostree_sys:ostree_kernel_args_cleanup() }
- //}
+ // Not needed
+ //pub fn cleanup(loc: /*Unimplemented*/Option<Fundamental: Pointer>)
#[cfg(any(feature = "v2019_3", feature = "dox"))]
- pub fn from_string(options: &str) -> Option<KernelArgs> {
+ pub fn from_string(options: &str) -> KernelArgs {
unsafe {
from_glib_full(ostree_sys::ostree_kernel_args_from_string(
options.to_glib_none().0,
}
#[cfg(any(feature = "v2019_3", feature = "dox"))]
- pub fn new() -> Option<KernelArgs> {
+ pub fn new() -> KernelArgs {
unsafe { from_glib_full(ostree_sys::ostree_kernel_args_new()) }
}
}
impl fmt::Display for KernelArgs {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- write!(f, "{}", self.to_string())
+ write!(f, "{}", self.to_gstring())
+ }
+}
+
+impl<T: AsRef<str>> From<T> for KernelArgs {
+ fn from(v: T) -> Self {
+ KernelArgs::from_string(v.as_ref())
}
}
--- /dev/null
+#[cfg(feature = "v2019_3")]
+use crate::KernelArgs;
+
+#[test]
+fn should_create_and_fill_kernel_args() {
+ let mut args = KernelArgs::new();
+ args.append("key=value");
+ args.append("arg1");
+ args.append("key2=value2");
+ assert_eq!(args.to_string(), "key=value arg1 key2=value2");
+}
+
+#[test]
+fn should_convert_to_string_vec() {
+ let mut args = KernelArgs::new();
+ args.parse_append("key=value arg1 key2=value2");
+ assert_eq!(
+ args.to_strv()
+ .iter()
+ .map(|s| s.as_str())
+ .collect::<Vec<_>>(),
+ vec!["key=value", "arg1", "key2=value2"]
+ );
+}
+
+#[test]
+fn should_get_last_value() {
+ let mut args = KernelArgs::new();
+ args.append("key=value1");
+ args.append("key=value2");
+ args.append("key=value3");
+ assert_eq!(args.get_last_value("key").unwrap(), "value3");
+}
+
+#[test]
+fn should_convert_from_string() {
+ let args = KernelArgs::from(String::from("arg1 arg2 arg3=value"));
+ assert_eq!(args.to_strv(), vec!["arg1", "arg2", "arg3=value"]);
+}